package cn.tworice.upload.service;

import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Base64;

public class FileEncryptionUtil {

    public static MultipartFile encodeMultipartFileToBase64(MultipartFile originalFile) throws Exception {
        // 1. 读取原始 MultipartFile 的数据
        byte[] originalFileContent = originalFile.getBytes();

        // 2. 加密文件数据
        byte[] encodedFileContent = Base64.getEncoder().encode(originalFileContent);

        // 3. 创建新的 MultipartFile 对象
        MultipartFile encodedFile = new MockMultipartFile(originalFile.getName(),
                originalFile.getOriginalFilename(),
                originalFile.getContentType(),
                encodedFileContent);

        return encodedFile;
    }

    public static File decodeFileFromBase64(File originalFile) throws IOException {
        // 1. 读取原始 File 的数据
        byte[] encodedFileContent = Files.readAllBytes(originalFile.toPath());

        // 2. 解密文件数据
        byte[] decodedFileContent = Base64.getDecoder().decode(encodedFileContent);

        // 3. 创建新的 File 对象
        File decodedFile = File.createTempFile("decoded-", ".tmp"); // 创建临时文件
        try (FileOutputStream fos = new FileOutputStream(decodedFile)) {
            fos.write(decodedFileContent);
        }

        return decodedFile;
    }
}

